// 多指针法——链表的反转

import { ListNode } from '../types'

/**
 * 真题描述：
 * 定义一个函数，输入一个链表的头结点，反转该链表并输出反转后链表的头结点。
 *
 * 示例:
 * 输入: 1->2->3->4->5->NULL
 * 输出: 5->4->3->2->1->NULL
 */
const reverseList = function reverseList(head: ListNode | null): ListNode {
	let pre: ListNode | null = null,
		cur = head

	while (cur) {
		const next = cur.next
		cur.next = pre
		pre = cur
		cur = next
	}

	return pre!
}
